package hao.bk.searchMap;

import hao.bk.royalmap.ExtendedTextView;
import hao.bk.royalmap.GeneralAnimationUtils;
import hao.bk.royalmap.HeaderLayout;
import hao.bk.royalmap.OnBackPressedInterface;
import hao.bk.royalmap.R;
import hao.bk.royalmap.RoyalMapActivity;
import hao.bk.sql.bo.Location;
import hao.bk.sql.bo.Typeshop;
import hao.bk.utils.ScreenUtils;
import hao.bk.utils.Utils;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.net.Uri;
import android.text.TextUtils;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;
import android.widget.Toast;


/**
 * Lớp tạo giao diện và các xử lý cho thông tin chi tiết cửa hàng, location
 * 
 * @author haoDV
 * 
 */
public class LocalShopInformation extends LinearLayout implements
		OnClickListener, OnBackPressedInterface {
	
	private RoyalMapActivity main;
	private HeaderLayout localHeaderBack;
	public ExtendedTextView nameInfoShop;
	private LinearLayout localFromLnl, localTolnl, localFavoriteLnl, callShopInfo;
	private ExtendedTextView infoAddressShop, infoPhoneNumberShop, updateIsFavInfo;
	private LocalShopLayout localShopLayout;
	private SearchMapGeneralLayout generalLayout;
	private boolean isLocalShopLayout;
	private Location location;
	/** Button tìm xe */
	private Button lookingVehicleBtn;
	private Typeshop typeShop;
	private ImageView logoShopInfo;
	private int tabFromOrFav = -1;
	private boolean isFavLocation = false;
	
	public LocalShopInformation(Context context, Typeshop typeShop, Location location) {
		super(context);
		main = RoyalMapActivity.getInstance();
		generalLayout = main.searchMap.generalLayout;
		this.typeShop = typeShop;
		isLocalShopLayout = true;
		this.location = location;
		initParams(this.location);
		this.localShopLayout = localShopLayout;
		
	}
	public LocalShopInformation(Context context, Location location, int tab) {
		super(context);
		tabFromOrFav = tab;
		main = RoyalMapActivity.getInstance();
		isLocalShopLayout = false;
		this.location = location;
		generalLayout = main.searchMap.generalLayout;
		initParams(this.location);
	}
	private void initParams(Location location) {
		inflate(main, R.layout.local_shop_infomation, this);
		localHeaderBack = (HeaderLayout)findViewById(R.id.info_shop_back);
		nameInfoShop = (ExtendedTextView)findViewById(R.id.name_info_local_shop);
		localFromLnl = (LinearLayout)findViewById(R.id.local_from_lnl);
		localFromLnl.setOnClickListener(this);
		lookingVehicleBtn = (Button)findViewById(R.id.looking_vehicle_btn);
		lookingVehicleBtn.setOnClickListener(this);
		localTolnl = (LinearLayout)findViewById(R.id.local_to_lnl);
		localTolnl.setOnClickListener(this);
		localFavoriteLnl = (LinearLayout)findViewById(R.id.local_favorite_lnl);
		localFavoriteLnl.setOnClickListener(this);
		callShopInfo = (LinearLayout)findViewById(R.id.call_shop_lnl);
		callShopInfo.setOnClickListener(this);
		logoShopInfo = (ImageView)findViewById(R.id.update_info_favorite_image);
		//logoShopInfo.setOnClickListener(this);
		updateIsFavInfo = (ExtendedTextView)findViewById(R.id.update_infomation_favorite_shop);
		updateIsFavInfo.setOnClickListener(this);
		infoAddressShop = (ExtendedTextView)findViewById(R.id.info_address_shop);
		infoPhoneNumberShop = (ExtendedTextView)findViewById(R.id.phone_number_shop);
		upDateAndDisPlayInfo(location);
		
	}
	public void upDateAndDisPlayInfo(Location location) {
		localHeaderBack.contentLayout.setVisibility(View.GONE);
		localHeaderBack.setHeaderTitle("Trở lại");
		main.setOnBackPressedInterface(this);
		/**set thông tin  */
		nameInfoShop.setText(location.getName()+"");
		infoAddressShop.setText(location.getAddress()+"");
		infoPhoneNumberShop.setText(location.getPhone()+"");
		if(location.isFavorite() == false) {
			isFavLocation = false;
			logoShopInfo.setBackgroundDrawable(main.getResources().
					getDrawable(R.drawable.favorite_icon_dislike));
			updateIsFavInfo.setText("Thêm vào danh sách yêu thích! ");
		} else if(location.isFavorite() == true) {
			isFavLocation = true;
			logoShopInfo.setBackgroundDrawable(main.getResources().
					getDrawable(R.drawable.favorite_icon_like));
			updateIsFavInfo.setText("Xóa khỏi danh sách yêu thích! ");
		}
		
		
	}

	@Override
	public void onBackPressed() {
		// TODO Auto-generated method stub
		if(isLocalShopLayout == true ) {
			LocalShopInformation.this.setVisibility(View.GONE);
			//Thay đổi nội dung search
			generalLayout.localShopLayout = new LocalShopLayout(main,typeShop);
			GeneralAnimationUtils.startRightToLeft(this, generalLayout.localShopLayout);
			main.searchMap.addContent(generalLayout.localShopLayout);
			generalLayout.localShopLayout.updateShopListShow(typeShop);
			
		} else if(isLocalShopLayout == false) {
			if(tabFromOrFav == 1) {//1 thì back lại tab hiện tại
				LocalShopInformation.this.setVisibility(View.GONE);
				main.searchMap.addContent(generalLayout);
				generalLayout.updateShopList();
				generalLayout.updateActiveTab(generalLayout.TAB_SEARCH_FROM, true);
				GeneralAnimationUtils.startRightToLeft(LocalShopInformation.this, generalLayout);
			}else if(tabFromOrFav == 2) {//2 thì back lại tab yêu thích
				LocalShopInformation.this.setVisibility(View.GONE);
				main.searchMap.addContent(generalLayout);
				generalLayout.updateFavoriteShopList();
				generalLayout.updateActiveTab(generalLayout.TAB_SEARCH_FAVORITE, true);
				GeneralAnimationUtils.startRightToLeft(LocalShopInformation.this, generalLayout);
			}
			
		}
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()) {
		case R.id.looking_vehicle_btn:
			//hiển thị thông tin tìm xe
			main.searchMap.setVisibility(View.GONE);
			main.mapB1.setVisibility(View.VISIBLE);
			main.showLookingVehicle();
			main.setTabStatus(main.TAB_HOME);
			main.btnSearch.setFooterFocus(false);
			main.btnMap.setFooterFocus(true);
			main.btnParking.setFooterFocus(false);
			main.footer.invalidate();
			break;
		case R.id.local_from_lnl:
			addIsFrom();
			break;
		case R.id.local_to_lnl:
			addIsTo();
			break;
		case R.id.update_infomation_favorite_shop:
			if(isFavLocation == true) {
				// Xóa địa điểm này ra khỏi ds yêu thích
				delLocationFav();
				isFavLocation = false;
			} else {
				//thêm địa điểm này vào ds yêu thích
				addLocationIsFav();
				isFavLocation = true;
			}
			break;
		case R.id.call_shop_lnl:
			String uri = "tel:" + infoPhoneNumberShop.getText();
			Intent intent = new Intent(Intent.ACTION_DIAL);
			intent.setData(Uri.parse(uri));
			main.startActivity(intent);
			break;
		default:
			break;
		}
	}
	public void addIsFrom() {
		main.searchMap.setVisibility(View.GONE);
		main.select_map.setVisibility(View.VISIBLE);
		main.select_menu.setVisibility(View.VISIBLE);
		/** Check điểm này thuộc tầng B1, hay B2 */
		String[] strings = TextUtils.split(this.location.getAddress(), "-");
		if(strings[0].compareToIgnoreCase("B1") == 0) {// so sánh 2 chuỗi, thuộc tầng B1
			main.mapB1.setVisibility(View.VISIBLE);
			/** Lấy về id area của cửa hàng được click để add bubles */
			int areaId = main.mapB1.getIdAreaViaName(this.location.getName());
			if(areaId > 0) {
				main.mapB1.showBubble(areaId);
				main.clicked.add(areaId);
				main.currentlyLocation = areaId;
				main.addIsCurrentLocation(this.location.getName(), 1);// 1, điểm thuộc tầng B1
			} else {
				main.showToastCustom("Địa điểm này chưa được thêm vào CSDL ");
			}
		} else {
			main.mapB2.setVisibility(View.VISIBLE);
			/** Lấy về id area của cửa hàng được click để add bubles */
			int areaId = main.mapB2.getIdAreaViaName(this.location.getName());
			Log.e("NAME: ", this.location.getName());
			Log.e("AREAID", areaId +"");
			if(areaId > 0) {
				main.mapB2.showBubble(areaId);
				main.clicked.add(areaId);
				main.currentlyLocation = areaId;
				main.addIsCurrentLocation(this.location.getName(), 2);// 2, điểm thuộc tầng B2
			} else {
				main.showToastCustom("Địa điểm này chưa được thêm vào CSDL ");
			}
		}	
	
		main.setTabStatus(main.TAB_HOME);
		main.btnMap.setFooterFocus(true);
		main.btnParking.setFooterFocus(false);
		main.btnSearch.setFooterFocus(false);
		main.footer.invalidate();
	}
	// Xóa địa điểm này ra khỏi yêu thích
	public void delLocationFav() {
		logoShopInfo.setBackgroundDrawable(main.getResources().
				getDrawable(R.drawable.favorite_icon_dislike));
		updateIsFavInfo.setText("Thêm vào danh sách yêu thích! ");
		// code thêm đoạn xóa khỏi db, sửa cột favorite của bảng location
	}
	//Thêm địa điểm này vào yêu thích
	public void addLocationIsFav() {
		logoShopInfo.setBackgroundDrawable(main.getResources().
				getDrawable(R.drawable.favorite_icon_like));
		updateIsFavInfo.setText("Xóa khỏi danh sách yêu thích! ");
		//thêm đoạn code add nhà hàng vào db, sửa cột favorite của bảng location
	}
	public void addIsTo() {
		main.searchMap.setVisibility(View.GONE);
		/** Check điểm này thuộc tầng B1, hay B2 */
		String[] strings = TextUtils.split(this.location.getAddress(), "-");
		if(strings[0].compareToIgnoreCase("B1") == 0)  {
			main.mapB1.setVisibility(View.VISIBLE);
			/** Lấy về id area của cửa hàng được click để add bubles */
			int areaId = main.mapB1.getIdAreaViaName(this.location.getName());
			if(areaId > 0) {
				main.mapB1.showBubble(areaId);
				main.toLocation = areaId;
				main.addIsToLocation(this.location.getName(), 1);// 1, điểm thuộc tầng B1
			} else {
				main.showToastCustom("Chưa thêm địa điểm này vào CSDL! ");
			}
		
			main.setTabStatus(main.TAB_HOME);
			main.btnMap.setFooterFocus(true);
			main.btnParking.setFooterFocus(false);
			main.btnSearch.setFooterFocus(false);
			main.footer.invalidate();
			
		} else {
			main.mapB2.setVisibility(View.VISIBLE);
			/** Lấy về id area của cửa hàng được click để add bubles */
			int areaId = main.mapB2.getIdAreaViaName(this.location.getName());
			if(areaId > 0) {
				main.mapB2.showBubble(areaId);
				main.toLocation = areaId;
				main.addIsToLocation(this.location.getName(), 2);// 2, điểm thuộc tầng B2
			} else {
				main.showToastCustom("Chưa thêm địa điểm này vào CSDL! ");
			}
		
			main.setTabStatus(main.TAB_HOME);
			main.btnMap.setFooterFocus(true);
			main.btnParking.setFooterFocus(false);
			main.btnSearch.setFooterFocus(false);
			main.footer.invalidate();
		}
		
	}

}
